package com.special.threademo.requests151demo.exception;

import org.omg.CORBA.PUBLIC_MEMBER;

import java.util.ArrayList;
import java.util.List;

class DefineException extends Exception {
    /**
     * 解决一次抛出就两个以上的异常的方法
     * 代码的逻辑定义
     */
    private List<Throwable> causes = new ArrayList<Throwable>();

    /**
     * 构造函数，
     * 主要起到对于对象的初始化赋值的处理上面
     * todo  研究构造函数的形成方式有哪些方式？
     * @param _cause
     */

    public DefineException(List<? extends Throwable> _cause) {
        causes.add((Throwable) _cause);
    }
/*
    public List<Throwable> getCauses() {
        return causes;
    }*/

    public static void main(String[] args) throws DefineException {


        /**
         * 调用进行
         */
        // public static void stuff() throws DefineException {
        List<Throwable> list = new ArrayList<Throwable>();
        try {
            // do something1
        } catch (Exception e) {
            list.add(e);
        }
        try {
            // do something2
        } catch (Exception e) {
            list.add(e);
        }
        if (list.size() > 0) {
            throw new DefineException(list);
        }
    }

}
